﻿using System.ComponentModel.DataAnnotations;

namespace EMC.VISITOR.Core;

    /// <summary>
    /// 队列发布基础输入参数
    /// </summary>
    public class SysMqPublishBaseInput
    {
        /// <summary>
        /// Node
        /// </summary>
        public virtual string? Node { get; set; }
        
        /// <summary>
        /// Connection
        /// </summary>
        public virtual string? Connection { get; set; }
        
        /// <summary>
        /// VirtualHost
        /// </summary>
        public virtual string? VirtualHost { get; set; }
        
        /// <summary>
        /// 唯一标识
        /// </summary>
        public virtual string? ASoleId { get; set; }
        
        /// <summary>
        /// Rabbit账号
        /// </summary>
        public virtual string? User { get; set; }
        
        /// <summary>
        /// Channel
        /// </summary>
        public virtual string? Channel { get; set; }
        
        /// <summary>
        /// Exchange
        /// </summary>
        public virtual string? Exchange { get; set; }
        
        /// <summary>
        /// 发布者
        /// </summary>
        public virtual string? RoutingKeys { get; set; }
        
        /// <summary>
        /// RoutedQueues
        /// </summary>
        public virtual string? RoutedQueues { get; set; }
        
        /// <summary>
        /// Properties
        /// </summary>
        public virtual string? Properties { get; set; }
        
        /// <summary>
        /// 消息体
        /// </summary>
        public virtual string? Payload { get; set; }
        
        /// <summary>
        /// 发布结果
        /// </summary>
        public virtual bool? HandlerResult { get; set; }
        
    }

    /// <summary>
    /// 队列发布分页查询输入参数
    /// </summary>
    public class SysMqPublishInput : BasePageInput
    {
        /// <summary>
        /// 关键字查询
        /// </summary>
        public string SearchKey { get; set; }

            /// <summary>
            /// 唯一标识
            /// </summary>
            public string? ASoleId { get; set; }
            
            /// <summary>
            /// Rabbit账号
            /// </summary>
            public string? User { get; set; }
            
            /// <summary>
            /// 发布者
            /// </summary>
            public string? RoutingKeys { get; set; }
            
            /// <summary>
            /// 消息体
            /// </summary>
            public string? Payload { get; set; }
            
            /// <summary>
            /// 发布结果
            /// </summary>
            public bool? HandlerResult { get; set; }
            
    }

    /// <summary>
    /// 队列发布增加输入参数
    /// </summary>
    public class AddSysMqPublishInput : SysMqPublishBaseInput
    {
    }

    /// <summary>
    /// 队列发布删除输入参数
    /// </summary>
    public class DeleteSysMqPublishInput : BaseIdInput
    {
    }

    /// <summary>
    /// 队列发布更新输入参数
    /// </summary>
    public class UpdateSysMqPublishInput : SysMqPublishBaseInput
    {
        /// <summary>
        /// Id
        /// </summary>
        [Required(ErrorMessage = "Id不能为空")]
        public long Id { get; set; }
        
    }

    /// <summary>
    /// 队列发布主键查询输入参数
    /// </summary>
    public class QueryByIdSysMqPublishInput : DeleteSysMqPublishInput
    {

    }
